package com.newcoder.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//配置跨域请求
@Configuration
public class Webconfig implements WebMvcConfigurer {

    /**
     * 配置静态资源的访问路径，将请求映射到指定的资源位置。无需通过 Controller 处理。
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }

    /**
     * 添加全局的配置 允许跨域请求
     * addMapping("/**")： 允许跨域的路径为所有路径（/** 表示通配符匹配所有）。
     * allowedOriginPatterns("*")： 允许来自任何来源的跨域请求。如果需要限制来源，可以用具体的域名替代，例如 http://localhost:3000。
     * allowedMethods： 定义允许的 HTTP 方法，如 POST、GET、PUT、OPTIONS、DELETE 等。
     * maxAge(3600)： 设置预检请求（OPTIONS 请求）的缓存时间为 3600 秒（1 小时）。
     * allowCredentials(true)： 允许跨域请求携带认证信息（如 Cookies、Authorization Header）。
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
}
